<?php
/*
	插件代码编辑
*/
defined('BY_JYA') or exit('error');
$_RQ['op']=$_RQ['op']?$_RQ['op']:'list';
$return=array();
$exts=array(
	'1'=>'php',
	'2'=>'html',
	'3'=>'js',
);
if($_RQ['op']=='list'){
	if(!$_SESSION['plugin_name']){
		exi('请先选择插件！','error');
	}
	$trees=array();
	cfc('files')->make_tree(ROOT_PLUGIN.$_SESSION['plugin_name'],$trees);
	$return['trees']=$trees;
	$return['htmls']=array(
		'type'=>'tree',
		'tabs'=>array(
			array('op'=>'list','title'=>'插件目录'),
			array('op'=>'edit','title'=>'文件编辑'),
		),
		'data'=>'trees',
		'tip'=>'插件目录',
		'edit'=>true,
		'del_one'=>true,
	);
	exi($return);
	//print_r($tree);exit;
}
if($_RQ['op']=='edit'){
	if(!$_RQ['id']){
		exi('请先选择要编辑的文件！','error');
	}
	$path=trim($_RQ['id']);
	$item=array('path'=>$path);
	$file=ROOT_PLUGIN.$_SESSION['plugin_name'].$path;
	if(is_file($file)){
		$item['code']=file_get_contents($file);
		$desc='编辑代码';
	}else{
		$item['code']="";
		$desc='找不到指定文件！请核对文件路径！';
	}
	$return['item']=$item;
	$return['htmls']=array(
		'type'=>'edit',
		'desc'=>$desc,
		'tabs'=>array(
			array('op'=>'list','title'=>'返回插件目录'),
		),
		'post'=>'post',
		'edit'=>array(
			array('type'=>'edit_code','name'=>'code','title'=>'代码','code'=>'php'),
		),
	);
	exi($return);
}
if($_RQ['op']=='add'){
	if($_RQ['postdata']){
		$post=get_postdata();
		$type=intval($post['type']);
		$path=trim($post['path']);
		if($path=='根目录'){
			$path='';
		}
		$name=trim($post['name']);
		if(!$type || !is_dir(ROOT_PLUGIN.$_SESSION['plugin_name'].$path) || preg_match('/[^\w_]/',$name)){
			exi('参数错误！可能的原因为：类型错误、目录错误、名称不合法！','error');
		}
		
		if($type==1){
			$ext=intval($post['ext']);
			if(!$ext){
				exi('请先选择文件类型！','error');
			}
			if($ext==1){
				$data="<?php\n//自定义文件\n?>";
			}elseif($ext==2){
				$data="<!--自定义文件-->";
			}elseif($ext==3){
				$data="//自定义文件";
			}
			file_put_contents(ROOT_PLUGIN.$_SESSION['plugin_name'].$path.'/'.$name.'.'.$exts[$ext],$data);
		}else{
			@mkdir(ROOT_PLUGIN.$_SESSION['plugin_name'].$path.'/'.$name);
		}
		exi('操作成功！','','list');
	}else{
		$path=trim($_RQ['path']);
		if(!is_dir(ROOT_PLUGIN.$_SESSION['plugin_name'].$path)){
			exi('指定目录不存在，无法添加！','error','goback');
		}
		$item=array('path'=>$path?$path:'根目录');
		$return['item']=$item;
		$return['types']=array(
			'1'=>'文件',
			'2'=>'目录',
		);
		$return['exts']=$exts;
		$return['htmls']=array(
			'type'=>'edit',
			'desc'=>'添加文件或目录',
			'edit'=>array(
				array('type'=>'string','name'=>'path','title'=>'添加到目录','read'=>true),
				array('type'=>'radio','name'=>'type','title'=>'添加类型','options'=>'types'),
				array('type'=>'string','name'=>'name','title'=>'文件或目录名称','help'=>'名称只支持字母、数字、下划线'),
				array('type'=>'radio','name'=>'ext','title'=>'文件类型','show'=>array('type'=>'1'),'options'=>'exts'),
			),
		);
		exi($return);
	}
}
if($_RQ['op']=='post'){
	$post=get_postdata();
	if(!$post['path']){
		exi('请先选择要编辑的文件！','error');
	}
	$file=ROOT_PLUGIN.$_SESSION['plugin_name'].trim($post['path']);
	if(!is_file($file)){
		exi('要编辑的文件不存在！','error');
	}
	$data=trim($post['code']);
	file_put_contents($file,$data);
	exi('编辑成功！','','hold');
}
if($_RQ['op']=='del'){
	$id=trim($_RQ['id']);
	if(!$id){
		exi('请先选则要删除的项目！','error');
	}
	$data=ROOT_PLUGIN.$_SESSION['plugin_name'].$id;
	if(is_file($data)){
		@unlink($data);
	}elseif(is_dir($data)){
		@rmdir($data);
	}else{
		exi('要删除的项目不存在！','error');
	}
	exi('删除成功！');
}
